from enum import Enum, auto


class State(Enum):
    USR_START = auto()
    ####################
    SYS_USER_MAYBE_WANTS_TO_TALK_ABOUT_PARTICULAR_GAME = auto()
    SYS_USER_DEFINITELY_WANTS_TO_TALK_ABOUT_GAME_BOT_NEVER_PLAYED = auto()
    SYS_USER_DEFINITELY_WANTS_TO_TALK_ABOUT_GAME_THAT_USER_PLAYED_AND_BOT_DIDNT_PLAY = auto()
    # -> (scopes.MINECRAFT, USR_START)
    SYS_USER_DOESNT_LIKE_GAMING = auto()
    SYS_USER_DIDNT_NAME_GAME = auto()
    SYS_USER_MENTIONED_GAMES_AS_HIS_INTEREST = auto()  # -> (scopes.MAIN, scopes.State.USR_ROOT)
    # from SYS_USER_WANTS_TO_TALK_ABOUT_PARTICULAR_GAME
    USR_CHECK_WITH_USER_GAME_TITLE = auto()

    # from USR_CHECK_WITH_USER_GAME_TITLE
    SYS_USER_CONFIRMS_GAME_BOT_NEVER_PLAYED = auto()
    SYS_USER_DOESNT_CONFIRM_GAME = auto()

    # from SYS_USER_CONFIRMS_GAME_BOT_NEVER_PLAYED
    USR_CONFESS_BOT_NEVER_PLAYED_GAME_ASK_USER_IF_HE_PLAYED = auto()
    # from SYS_USER_DEFINITELY_WANTS_TO_TALK_ABOUT_GAME_THAT_USER_PLAYED_AND_BOT_DIDNT_PLAY
    USR_CONFESS_BOT_NEVER_PLAYED_GAME_ASK_HOW_LONG_USER_PLAYED = auto()
    # from SYS_USER_DOESNT_LIKE_GAMING
    USR_ASK_IF_USER_THINKS_THAT_GAMING_IS_UNHEALTHY = auto()
    # from SYS_USER_DIDNT_NAME_GAME
    USR_ASK_IF_USER_PLAYED_MINECRAFT = auto()

    # from USR_ASK_IF_USER_THINKS_THAT_GAMING_IS_UNHEALTHY
    SYS_USER_THINKS_GAMING_IS_UNHEALTHY = auto()
    SYS_USER_THINKS_GAMING_IS_HEALTHY = auto()

    # from USR_ASK_IF_USER_PLAYED_MINECRAFT
    SYS_USER_DIDNT_PLAY_MINECRAFT = auto()

    # from USR_ASK_USER_IF_HE_PLAYED_GAME
    SYS_USER_PLAYED_GAME = auto()
    SYS_USER_DIDNT_PLAY_GAME = auto()

    # from USR_CONFESS_BOT_NEVER_PLAYED_GAME_ASK_HOW_LONG_USER_PLAYED
    SYS_USER_TELLS_HOW_LONG_HE_PLAYED = auto()

    # from SYS_USER_TELLS_HOW_LONG_HE_PLAYED
    USR_COMMENT_ON_USER_EXPERIENCE_AND_ASK_IF_USER_RECOMMENDS_GAME = auto()

    # from SYS_USER_PLAYED_GAME
    USR_TELL_ABOUT_WHAT_BOT_LIKES_AND_ASK_IF_USER_RECOMMENDS_GAME = auto()

    # from USR_TELL_ABOUT_WHAT_BOT_LIKES_AND_ASK_IF_USER_RECOMMENDS_GAME
    SYS_USER_RECOMMENDS_GAME = auto()
    SYS_USER_DOESNT_RECOMMEND_GAME = auto()

    # from SYS_USER_DIDNT_PLAY_GAME
    USR_SUGGEST_USER_GAME_DESCRIPTION = auto()

    # from USR_SUGGEST_USER_GAME_DESCRIPTION
    SYS_USER_WANTS_GAME_DESCRIPTION_AND_2_OR_MORE_TURNS_OF_DESCRIPTION_REMAIN = auto()
    SYS_USER_WANTS_GAME_DESCRIPTION_LAST_TURN_OF_DESCRIPTION = auto()
    SYS_USER_DOESNT_WANT_GAME_DESCRIPTION = auto()

    # from SYS_USER_WANTS_GAME_DESCRIPTION_AND_2_OR_MORE_TURNS_OF_DESCRIPTION_REMAIN
    USR_DESCRIBE_GAME_TO_USER_AND_ASK_IF_HE_WANTS_MORE = auto()

    # from SYS_USER_WANTS_GAME_DESCRIPTION_LAST_TURN_OF_DESCRIPTION
    USR_DESCRIBE_GAME_TO_USER_AND_ASK_HE_WANTS_TO_PLAY_GAME = auto()

    # from USR_DESCRIBE_GAME_TO_USER_AND_ASK_HE_WANTS_TO_PLAY_GAME
    SYS_USER_SAYS_HE_WANTS_TO_PLAY_GAME = auto()
    SYS_USER_SAYS_HE_DOESNT_WANT_TO_PLAY_GAME = auto()

    ####################
    SYS_ERR = auto()
    USR_ERR = auto()
